package com.smile.model.request;

import com.smile.commons.gps.domain.CoordinatePointReq;
import lombok.Data;
import lombok.ToString;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

@Data
@ToString
public class UpdatePlanarAirlineRequest implements Serializable {
    private static final long serialVersionUID = 1L;

    private Long id;

    /**
     * 航线名称
     */
    private String airlineName;

    /**
     * 航线类型 0点状 1 面状
     */
    private Integer airlineType;

    /**
     * 面积
     */
    @NotNull(message = "面积不能为空")
    private Integer areas;

    /**
     * 预计执行时间
     */
    @NotBlank(message = "预计执行时间不能为空")
    private String executeTime;

    /**
     * 航线总长度
     */
    @NotNull(message = "航线总长度不能为空")
    private Integer totalDistance;

    /**
     * 总照片数
     */
    @NotNull(message = "总照片数不能为空")
    private Integer totalPhotos;


    /**
     * 参考起飞点
     */
//    @NotBlank(message = "参考起飞点不能为空")
    private String takeOffRefPoint;


    //    @NotBlank(message = "是否支持红外摄像头参数不能为空")

    private Integer irTypeSupport;

    //    @NotBlank(message = "是否支持广角摄像头")
    private Integer wideTypeSupport;

    /**
     * 采集方式 0正射采集 1. 倾斜采集
     */
    private Integer collectType;

    /**
     * 广角gsd
     */
    private Integer wideGsd;

    /**
     * 倾斜gsd
     */
    private Integer inclineGsd;

    /**
     * 航线高度模式
     * <p>
     * 0 海拔高度
     * 1 相对起飞点高度
     * 2 相对地形高度
     */
    private Integer heightMode;

    /**
     * 航线高度
     */
    private BigDecimal height;

    /**
     * 安全起飞高度
     */
    private BigDecimal takeOffSecurityHeight;

    /**
     * 云台俯仰角度
     */
    private Integer gimbalPitchAngle;

    /**
     * 全局航线速度
     */
    private BigDecimal autoFlightSpeed;

//    private Integer


    /**
     * 0自动返航
     * 1返回航线到起始点悬停
     * 2退出航线模式
     * 3原地降落
     */
    private Integer finishAction;

    /**
     * 是否开启高程优化 0不开启 1 开启
     */
    private Integer elevationOptimizeEnable;

    private List<UpdateCoordinatePointReq> coordinatePointReqList;

    private BigDecimal globalShootHeight;

    /**
     * 测区外扩距离
     */
    private Integer margin;

    /**
     * 航线方向
     */
    private Integer direction;

    /**
     * 航向重叠率
     */
    private Integer overlapH;

    /**
     * 旁向重叠率
     */
    private Integer overlapW;

    /**
     * 偏航角度
     */
    private BigDecimal waypointHeadingAngle;

    /**
     * 0 沿航线方向
     * 1 手动控制
     */
    private Integer waypointHeadingMode;

    /**
     * 0 等时间拍照
     * 1 等距离拍照
     */
    private Integer shootType;

    /**
     * 起飞速度
     */
    private BigDecimal globalTransitionalSpeed;
}
